1. Field of the Invention
This invention relates to a method of applying patches to computer program code concurrently with its execution on a machine and, more particularly, to a method of applying such concurrent patches to the logical partition manager of a logically partitioned system.
2. Description of the Related Art
Logically partitioned computer systems are well known in the art. Examples of such logically partitioned systems are described in U.S. Pat. No. 4,564,903 (Guyette et al.), U.S. Pat. No. 4,843,541 (Bean et al.), and U.S. Pat. No. 5,564,040 (Kubala), incorporated herein by reference. Commercial embodiments of logically partitioned systems include those sold by the assignee of this application under the trademarks Processor Resource/Systems Manager and PR/SM.
Logical partitioning allows the establishment of a plurality of system images within a single physical computer system. Each system image, in turn, is capable of operating as if it were a separate and independent computer system. That is, each logical partition can be independently reset, initially loaded with an operating system that is potentially different for each logical partition, and operate with different software programs using different input/output (I/O) devices. Logical partitioning is in common use today because it provides its users with flexibility to change the number of logical partitions in use and the amount of physical system resources assigned to each partition, in some cases while the entire system continues to operate.
Computer users have long had a need for continuous non-disrupted operation. Activation of logical partition manager patches has, until now, required a power-on reset (POR), thereby disrupting system operation. It would be desirable, however, to have a means for applying program patches to logical partition manager code concurrently with its execution.
The copending application of K. U. Chang et al., Ser. No. 08/550,121, still pending filed Oct. 27, 1995, entitled "Concurrent Patch to Logical Partition Manager of a Logically Partitioned System" and incorporated herein by reference, discloses a method of replacing a current version of a program module with a replacement version of the module concurrently with the execution of the program on a computer system. For each entry point within the current version of said module to which the program may make address reference, a corresponding entry point within the replacement version of the module is determined. While execution of the program is suspended, each address reference in the program to an entry point within the current version of the module is replaced with an address reference to the corresponding entry point within the replacement version of the module. Execution of the program is resumed when each address reference to the current module has been replaced with one to the replacement module.
The invention described in the copending application of Chang et al. permits the application of concurrent patches to program code such as the code of a logical partition manager. However, a significant subset of potential fixes that could be made to the logical partition manager of a logically partitioned system cannot be applied concurrently. These problem fixes, which can now be made only via disruptive patch, require as part of their implementation execution of such tasks as storage allocation or table initialization. The concurrent patch procedure described in the Chang et al. application is limited by the requirement that these functions be performed only during the initialization phase of the logical partition manager. Because of this limitation, patches requiring, for example, storage allocation prior to their application must either be patched disruptively or have their activation delayed until after an initialization of the logical partition manager subsequent to patch application.